.NET 6 deep dive